// ----------------------------------------------------------
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v.2.0. If a copy of the MPL
// was not distributed with this file, You can obtain one
// at http://mozilla.org/MPL/2.0/.
// ----------------------------------------------------------
// Codebase: https://github.com/ArKuznetsov/cpdb/
// ----------------------------------------------------------

#Использовать "../../core"

#Область СлужебныйПрограммныйИнтерфейс

// Процедура - устанавливает описание команды
//
// Параметры:
//  Команда    - КомандаПриложения     - объект описание команды
//
Процедура ОписаниеКоманды(Команда) Экспорт
	
	Команда.Опция("pp params", "", "Файлы JSON содержащие значения параметров,
	                               | могут быть указаны несколько файлов разделенные "";""")
	       .ТСтрока()
	       .ВОкружении("CPDB_PARAMS");

	Команда.Опция("d db sql-db", "", "имя базы для резервного копирования")
	       .ТСтрока()
	       .Обязательный()
	       .ВОкружении("CPDB_SQL_DATABASE");
	
	Команда.Опция("sd shrink-db", Ложь, "сжать файлы данных")
	       .Флаговый()
	       .ВОкружении("CPDB_SQL_SHRINK_DB");
	
	Команда.Опция("sl shrink-log", Ложь, "сжать файлы журнала транзакций")
	       .Флаговый()
	       .ВОкружении("CPDB_SQL_SHRINK_LOG");
	
КонецПроцедуры // ОписаниеКоманды()

// Процедура - запускает выполнение команды устанавливает описание команды
//
// Параметры:
//  Команда    - КомандаПриложения     - объект  описание команды
//
Процедура ВыполнитьКоманду(Знач Команда) Экспорт

	ЧтениеОпций = Новый ЧтениеОпцийКоманды(Команда);

	ВыводОтладочнойИнформации = ЧтениеОпций.ЗначениеОпции("verbose");

	ПараметрыСистемы.УстановитьРежимОтладки(ВыводОтладочнойИнформации);

	Сервер             = ЧтениеОпций.ЗначениеОпции("srvr", Истина);
	Пользователь       = ЧтениеОпций.ЗначениеОпции("user", Истина);
	ПарольПользователя = ЧтениеОпций.ЗначениеОпции("pwd", Истина);
	База               = ЧтениеОпций.ЗначениеОпции("db");
	СжатьБазу          = ЧтениеОпций.ЗначениеОпции("shrink-db");
	СжатьФайлЛог       = ЧтениеОпций.ЗначениеОпции("shrink-log");

	ПодключениеКСУБД = Новый ПодключениеMSSQL(Сервер, Пользователь, ПарольПользователя);

	РаботаССУБД = Новый РаботаССУБД(ПодключениеКСУБД);

	РаботаССУБД.ВключитьКомпрессию(База);
	
	Если СжатьБазу Тогда
		РаботаССУБД.СжатьБазу(База);
	КонецЕсли;

	Если СжатьФайлЛог Тогда
		РаботаССУБД.СжатьФайлЖурналаТранзакций(База);
	КонецЕсли;
	
КонецПроцедуры // ВыполнитьКоманду()

#КонецОбласти // СлужебныйПрограммныйИнтерфейс
